//package view.forms;
//
///*
// * EkranskaFormaRacun.java
// *
// * 02.05.2011
// *
// * @autor  Dr Sinisa Vlajic
// *
// * Katedra za softversko inzenjerstvo
// *
// * Laboratorija za softversko inzenjerstvo
// *
// * Fakultet organizacionih nauka - Beograd
// *
// */
//
//
//import javax.swing.*;
//import java.awt.*;
//import java.awt.event.*;
//import javax.swing.table.*;
//import view.AbsoluteConstraints;
//import view.AbsoluteLayout;
//import view.guicontrollers.KontrolerKIRacun;
//
//
//public class EkranskaFormaRacun extends OpstaEkranskaForma
// { KontrolerKIRacun kkir;
//
//   private JLabel LNazivDokumenta;
//
//   // Komponente koje reprezentuju klasu
//
//   JLabel LBrojRacuna;
//   JFormattedTextField BrojRacuna;
//
//   JLabel LNazivPartnera;
//   JFormattedTextField NazivPartnera;
//
//   JLabel LUkupnaVrednost;
//   JFormattedTextField UkupnaVrednost;
//
//   JCheckBox Obradjen;
//   JCheckBox Storniran;
//
//
//   JFormattedTextField Pretrazivanje;
//   JLabel LPretrazivanje;
//
//   // Komponenete koje reprezentuju niz objekata stavke dokumenta.
//       JTable TabStavkaRacuna;
//
//   // Atributi potrebni za definisanje tabele.
//       DefaultTableModel DTM;
//
//       private JButton Kreiraj;
//       private JButton Zapamti;
//       private JButton Obradi;
//       private JButton Storniraj;
//
//
//
//   // Glavni program
//   public static void main(String args[])
//      { EkranskaFormaRacun EF = new EkranskaFormaRacun();
//        EF.show();
//      }
//
//   // 1. Konstruktor ekranske forme
//   public EkranskaFormaRacun ()
//      {	kreirajKomponenteEkranskeForme();      // 1.1
//        pokreniMenadzeraRasporedaKomponeti();  // 1.2
//	    postaviImeForme();                     // 1.3
//
//        postaviTextFieldBrojRacuna();          // 1.4
//        postaviTextFieldNazivPartnera();       // 1.5
//        postaviTextFieldUkupnaVrednost();      // 1.6
// 	    postaviTextFieldPretrazivanje();       // 1.7
//
// 	    postaviCheckBoxObradjen(); 			   // 1.8
//        postaviCheckBoxStorniran();            // 1.9
//
//   	    postaviDugmeKreiraj();                 // 1.10
//        postaviDugmeObradi();                  // 1.11
//        postaviDugmeStorniraj();			   // 1.12
//        postaviDugmeZapamti();				   // 1.13
//
//        postaviTabelu();					   // 1.14
//
//        inicijalizacijaKontrolera();		   // 1.15
//
//
//        pack();
//       }
//
//// 1.1 Kreiranje i inicijalizacija komponenti ekranske forme
//void kreirajKomponenteEkranskeForme()
//  {
//	LNazivDokumenta = new JLabel();
//    BrojRacuna = new JFormattedTextField(); LBrojRacuna= new JLabel();
//    NazivPartnera = new JFormattedTextField(); LNazivPartnera= new JLabel();
//    UkupnaVrednost = new JFormattedTextField(); LUkupnaVrednost= new JLabel();
//    Obradjen = new JCheckBox();
//    Storniran = new JCheckBox();
//    Kreiraj = new JButton();
//	Zapamti = new JButton();
//	Obradi = new JButton();
//	Storniraj = new JButton();
//	Pretrazivanje = new JFormattedTextField();
//	LPretrazivanje = new JLabel();
// }
//
//
//// 1.2 Kreiranje menadzera rasporeda komponenti i njegovo dodeljivanje do kontejnera okvira(JFrame komponente).
//void pokreniMenadzeraRasporedaKomponeti()
//  { getContentPane().setLayout(new AbsoluteLayout());}
//
//// 1.3 Odredivanje naslovnog teksta i njegovo dodeljivanje do kontejnera okvira.
//void postaviImeForme()
//{  LNazivDokumenta.setFont(new Font("Times New Roman", 1, 24));
//   LNazivDokumenta.setText("Racun");
//   getContentPane().add(LNazivDokumenta, new AbsoluteConstraints(20, 10, -1, -1));
//}
//
//// 1.4
//void postaviTextFieldBrojRacuna()
// { LBrojRacuna.setText("Broj racuna:");
//   getContentPane().add(LBrojRacuna, new AbsoluteConstraints(20,80,-1, -1));
//   BrojRacuna.setEditable(false);
//   getContentPane().add(BrojRacuna, new AbsoluteConstraints(20,100,50, -1));
// }
//
//// 1.5
//void postaviTextFieldNazivPartnera()
// { LNazivPartnera.setText("Naziv partnera:");
//   getContentPane().add(LNazivPartnera, new AbsoluteConstraints(20,130,-1, -1));
//   NazivPartnera.setEditable(true);
//   getContentPane().add(NazivPartnera, new AbsoluteConstraints(20,150,250, -1));
// }
//
//// 1.6
//void postaviTextFieldUkupnaVrednost()
// { LUkupnaVrednost.setText("Ukupna vrednost:");
//   getContentPane().add(LUkupnaVrednost, new AbsoluteConstraints(480,290,150, -1));
//   UkupnaVrednost.setEditable(false);
//   getContentPane().add(UkupnaVrednost, new AbsoluteConstraints(480,310,120, -1));
// }
//
//// 1.7
//void postaviTextFieldPretrazivanje()
// { // Dodeljivanje pocetne vrednosti i formata polja.
//   Pretrazivanje.setValue(new String(""));
//   // Polje postaje slusalac dogadjaja,koji ce se desiti nakon unosa podataka u polje.
//   Pretrazivanje.setBackground(new Color(51, 51, 255));
//       // Odredjivanje boje crtanja polja.
//   Pretrazivanje.setForeground(new Color(255, 255, 51));
//
//   Pretrazivanje.addActionListener
//     ( new ActionListener()
//         // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//       { /********************************************************/
//	     public void actionPerformed(ActionEvent evt)
//           { BrojRacuna.setValue(Pretrazivanje.getValue());
//             NazivPartnera.setValue("");
//             UkupnaVrednost.setValue(new Double(0));
//             DefaultTableModel DTM = (DefaultTableModel)TabStavkaRacuna.getModel();
//             DTM.setRowCount(0);
//		     String signal = kkir.SOPretrazi();
//             if (signal.charAt(1) == '*')
//               { BrojRacuna.setValue("");
//                 NazivPartnera.setValue("");
//                 UkupnaVrednost.setValue(new Double(0));
//               }
//             // Prikaz poruke o uspesnosti izvrsenja operacije
//             PrikazPorukeUspesnosti(signal);
//             if (DTM.getRowCount() == 0)
//                DTM.addRow(StavkaRacuna.vratiPocetneVrednosti());
//
//           }
//         /********************************************************/
//       }
//	 );
//	// Polje se dodaje kontejneru okvira (JFrame).
//    getContentPane().add(Pretrazivanje, new AbsoluteConstraints(140, 100, 50, -1));
//
//    LPretrazivanje.setText("Pretrazi");
//    getContentPane().add(LPretrazivanje, new AbsoluteConstraints(140, 80, -1, -1));
//}
//
//
//// 1.8
//void postaviCheckBoxObradjen()
// { Obradjen.setText("Obradjen");
//   Obradjen.setFocusable(false);
//   Obradjen.setEnabled(false);
//   getContentPane().add(Obradjen, new AbsoluteConstraints(390,80,-1, -1));
// }
//
//// 1.9
//void postaviCheckBoxStorniran()
// { Storniran.setText("Storniran");
//   Storniran.setFocusable(false);
//   Storniran.setEnabled(false);
//   getContentPane().add(Storniran, new AbsoluteConstraints(500,80,-1, -1));
// }
//
//
//// 1.10
//void postaviDugmeKreiraj()
// { Kreiraj.setText("Kreiraj");
//   Kreiraj.addActionListener
//      ( new ActionListener()
//           {
//			 /********************************************************/
//   			 // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//			 public void actionPerformed(ActionEvent evt)
//				   { String signal = kkir.SOKreirajNovi();
//
//					 DTM.setRowCount(0);
//					 //for (int j=0; j<TabStavkaRacuna.getColumnCount(); j++)
//					   //   {  TabStavkaRacuna.setValueAt(StavkaRacuna.vratiPocetneVrednosti()[j],0,j);}
//					 DTM.addRow(StavkaRacuna.vratiPocetneVrednosti());
//					 // Prikaz poruke o uspesnosti izvrsenja operacije
//					 PrikazPorukeUspesnosti(signal);
//					}
//      	   }
//      );
//   /********************************************************/
//
//   getContentPane().add(Kreiraj, new AbsoluteConstraints(170, 30, -1, -1));
//}
//
//// 1.11
//void postaviDugmeObradi()
// {
//   Obradi.setText("Obradi");
//   Obradi.addActionListener
//      ( new ActionListener()
//           {
//            // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//            /********************************************************/
//            public void actionPerformed(ActionEvent evt)
//                 { String signal = kkir.SOObradi();
// 	               // Prikaz poruke o uspesnosti izvrsenja operacije
//                   PrikazPorukeUspesnosti(signal);
//                 }
//            /********************************************************/
//           }
//      );
//   getContentPane().add(Obradi, new AbsoluteConstraints(390, 30, -1, -1));
// }
//
//
//
//// 1.12
//void  postaviDugmeStorniraj()
//{ Storniraj.setText("Storniraj");
//  Storniraj.addActionListener
//     ( new ActionListener()
//          {
//	       // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//	       /********************************************************/
//           public void actionPerformed(ActionEvent evt)
//                { String signal = kkir.SOStorniraj();
//                  // Prikaz poruke o uspesnosti izvrsenja operacije
//                  PrikazPorukeUspesnosti(signal);
//                 }
//           /********************************************************/
//          }
//     );
//  getContentPane().add(Storniraj, new AbsoluteConstraints(500, 30, -1, -1));
//}
//
//
//// 1.13
//void postaviDugmeZapamti()
// { Zapamti.setText("Zapamti");
//   Zapamti.addActionListener
//      (new ActionListener()
//          { // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//    		/********************************************************/
//            public void actionPerformed(ActionEvent evt)
//                 { String signal = kkir.SOZapamti();
//                   // Prikaz poruke o uspesnosti izvrsenja operacije
//                   PrikazPorukeUspesnosti(signal);
//                 }
//           }
//      );
//   /********************************************************/
//
//  getContentPane().add(Zapamti, new AbsoluteConstraints(280, 30, -1, -1));
//}
//
//
//// 1.14
//void postaviTabelu()
//{ // 1. - Kreiranje i inicijalizacija modela tabele.
//
//  String[] zaglavlje = StavkaRacuna.vratiZaglavlje();
//
//  TabStavkaRacuna = new JTable();
//
//   DTM =  new DefaultTableModel (zaglavlje,1)
//       {  // LOGICKO POVEZIVANJE (PO TIPU) KOLONA TABELE SA ATRIBUTIMA klase stavka.		  // Inicilazacija KOLONA TABELE sa tipovima klasa stavka dok.
//      	  Class[] types = StavkaRacuna.vratiTipove();
//      	  // Ova metoda onemogucava unos podataka neodgovarajuceg tipa u polja (celije) tabele.
//      	  // npr: Ukoliko je kolona vezana za Double klasu u nju se ne mogu uneti String podaci.
//   		  public Class getColumnClass(int columnIndex){ return types [columnIndex];}
//       };
//  // 2. - Povezivanje tabele sa modelom tabele.
//  TabStavkaRacuna.setModel(DTM);
//
//
//  // 3. - Tabela postaje slusalac dogadjaja, koji ce se desiti nakon pritiska tipke
//  // na bilo kom polju tabele.
//  TabStavkaRacuna.addKeyListener(new KeyAdapter()
//    {  /********************************************************/
//	   // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//	   public void keyPressed(KeyEvent evt)
//            {String signal = kkir.pritisakTipke(evt);
//             // Prikaz poruke o uspesnosti izvrsenja operacije
//             PrikazPorukeUspesnosti(signal);
//            }
//      /********************************************************/
//   });
//
//// 4. - Tabela postaje slusalac dogadjaja, koji ce se desiti nakon otpustanja tipke
//// na bilo kom polju tabele.
//TabStavkaRacuna.addKeyListener(new KeyAdapter()
//   {  /********************************************************/
//	  // DOGADJAJ KOJI INICIRA POZIV SISTEMSKE OPERACIJE
//	  public void keyReleased(KeyEvent evt)
//            {String signal = kkir.pustanjeTipke(evt);
//             // Prikaz poruke o uspesnosti izvrsenja operacije
//             PrikazPorukeUspesnosti(signal);
//            }
//      /********************************************************/
//   });
//
//
//// 5.Kreiranje i inicijalizacija objekta koji pomaze da se tabela skroluje hotizontalno
//// i vertikalno.
//int vsb = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
//int hsb = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
//JScrollPane skrol = new JScrollPane(TabStavkaRacuna,vsb,hsb);
//// Skrol objekat se dodaje kontejneru okvira (JFrame)
//getContentPane().add(skrol, new AbsoluteConstraints(20,190,440, 150));
//
//}
//
//
//// 1.15 Inicijalizacija KontroleraKI
//void inicijalizacijaKontrolera()
//        {  try { kkir = new KontrolerKIRacun (this); } catch(Exception e) {}}
//
//
//
//// Nakon izvrsenja sistemskih operacija poziva se ova metoda koja prikazuje
//// dijalog boks sa porukom o uspesnosti izvrsenja sistemske operacije.
//void PrikazPorukeUspesnosti(String signal)
//{ Boolean prikazi = new Boolean(true);;
//  DijalogBoksPrikazPoruke DBPP = new DijalogBoksPrikazPoruke(this);
//  int signal1 = DBPP.PrikazPoruke(signal);
//  if (signal1 == 1)
//    { DBPP.show();
//      pack();
//    }
//}
//
//// POZIVA SE IZ OPSTIKONTROLERKI - pocetak
//TableModel vratiModel(){return TabStavkaRacuna.getModel();}
//
//Object[] vratiPocetneVrednosti() { return StavkaRacuna.vratiPocetneVrednosti();}
//
//int vratiSelektovaniRed() { return TabStavkaRacuna.getSelectedRow();}
//
//OpstiDomenskiObjekat kreirajObjekat(){return new Racun();}
//// POZIVA SE IZ OPSTIKONTROLERKI - kraj
//
//}
//
//class DijalogBoksPrikazPoruke extends JDialog
//{ public DijalogBoksPrikazPoruke(JFrame roditelj)
//   { super(roditelj,"Poruka:", true);} // true definise modalni dijalog
//
//  int PrikazPoruke(String signal)
//    {
//	  Box b = Box.createVerticalBox();
//      b.add(Box.createGlue());
//
//      System.out.println("Signal (klijent):" + signal);
//
//      b.add(new JLabel(signal));
//      getContentPane().add(b,"Center");
//      setSize(750,75);
//      return 1;
//    }
//}
//
